A geocode identifies a geographic location. Generally, geocodes come in the form of coordinates, such as latitude and longitude values. A postal address, or a range of postal addresses, can be associated with a set of coordinates, for example, in a table. Normally, postal addresses are well formatted and hierarchical in structure. For example, a postal address may include a street name, city, state, and zip code. In the table then, each row may contain columns, where each column identifies a different component of the postal address. When given a postal address, a lookup can be performed on the table to identify a row that matches the components of the postal address. A set of coordinates can then be read or approximated based on the chosen row.
The hierarchical nature of a postal address makes it easy to parse and identify the different components of an address, thereby simplifying the geocode finding process for a given postal address. However, problems may arise if an address does not follow these conventions. In some countries, addresses typically include references to multiple features and are not hierarchical. For example, some features may include buildings, stores, or landmarks, and the address describes relative proximity to these features. Performing a table lookup is impractical since there is no defined order to the address, there may be a lack of information concerning typical address components, such as roads or street numbers, and a table cannot recognize a description of a spatial relationship between two or more objects.
What is needed are techniques to geocode addresses that may contain multiple features with no discernible hierarchy.